/*
 Highcharts JS v2.3.5 (2012-12-19)
 Exporting module

 (c) 2010-2011 Torstein Hønsi

 License: www.highcharts.com/license
*/
(function(e){
    function y(a){
        for(var b=a.length;b--;)typeof a[b]==="number"&&(a[b]=Math.round(a[b])-0.5);
        return a
    }
    var z=e.Chart,u=e.addEvent,B=e.removeEvent,j=e.createElement,v=e.discardElement,t=e.css,l=e.merge,k=e.each,o=e.extend,C=Math.max,i=document,D=window,E=e.isTouchDevice,A=e.Renderer.prototype.symbols,w=e.getOptions();
    o(w.lang,{
        downloadPNG:"Download PNG image",
        downloadJPEG:"Download JPEG image",
        downloadPDF:"Download PDF document",
        downloadSVG:"Download SVG vector image",
        exportButtonTitle:"Export to raster or vector image",
        printButtonTitle:"Print the chart"
    });
    w.navigation={
        menuStyle:{
            border:"1px solid #A0A0A0",
            background:"#FFFFFF"
        },
        menuItemStyle:{
            padding:"0 5px",
            background:"none",
            color:"#303030",
            fontSize:E?"14px":"11px"
        },
        menuItemHoverStyle:{
            background:"#4572A5",
            color:"#FFFFFF"
        },
        buttonOptions:{
            align:"right",
            backgroundColor:{
                linearGradient:[0,0,0,20],
                stops:[[0.4,"#F7F7F7"],[0.6,"#E3E3E3"]]
            },
            borderColor:"#B0B0B0",
            borderRadius:3,
            borderWidth:1,
            height:20,
            hoverBorderColor:"#909090",
            hoverSymbolFill:"#81A7CF",
            hoverSymbolStroke:"#4572A5",
            symbolFill:"#E0E0E0",
            symbolStroke:"#A0A0A0",
            symbolX:11.5,
            symbolY:10.5,
            verticalAlign:"top",
            width:24,
            y:10
        }
    };
    
    w.exporting={
        type:"image/png",
        url:"http://export.highcharts.com/",
        width:800,
        buttons:{
            exportButton:{
                symbol:"exportIcon",
                x:-10,
                symbolFill:"#A8BF77",
                hoverSymbolFill:"#768F3E",
                _id:"exportButton",
                _titleKey:"exportButtonTitle",
                menuItems:[{
                    textKey:"downloadPNG",
                    onclick:function(){
                        this.exportChart()
                    }
                },{
                    textKey:"downloadJPEG",
                    onclick:function(){
                        this.exportChart({
                            type:"image/jpeg"
                        })
                    }
                },{
                    textKey:"downloadPDF",
                    onclick:function(){
                        this.exportChart({
                            type:"application/pdf"
                        })
                    }
                },{
                    textKey:"downloadSVG",
                    onclick:function(){
                        this.exportChart({
                            type:"image/svg+xml"
                        })
                    }
                }]
            },
            printButton:{
                symbol:"printIcon",
                x:-36,
                symbolFill:"#B5C9DF",
                hoverSymbolFill:"#779ABF",
                _id:"printButton",
                _titleKey:"printButtonTitle",
                onclick:function(){
                    this.print()
                }
            }
        }
    };

    e.post=function(a,b){
        var c,d;
        d=j("form",{
            method:"post",
            action:a,
            acceptCharset:"UTF-8",
            enctype:"multipart/form-data"
        },{
            display:"none"
        },i.body);
        for(c in b)j("input",{
            type:"hidden",
            name:c,
            value:b[c]
        },null,d);
        d.submit();
        v(d)
    };
    
    o(z.prototype,{
        getSVG:function(a){
            var b=this,c,d,f,g=l(b.options,a);
            if(!i.createElementNS)i.createElementNS=function(a,b){
                return i.createElement(b)
            };
            
            a=j("div",null,{
                position:"absolute",
                top:"-9999em",
                width:b.chartWidth+"px",
                height:b.chartHeight+"px"
            },i.body);
            o(g.chart,{
                renderTo:a,
                forExport:!0
            });
            g.exporting.enabled=!1;
            g.chart.plotBackgroundImage=null;
            g.series=[];
            k(b.series,function(a){
                f=l(a.options,{
                    animation:!1,
                    showCheckbox:!1,
                    visible:a.visible
                });
                f.isInternal||g.series.push(f)
            });
            c=
            new e.Chart(g);
            k(["xAxis","yAxis"],function(a){
                k(b[a],function(b,d){
                    var f=c[a][d],g=b.getExtremes(),e=g.userMin,g=g.userMax;
                    (e!==void 0||g!==void 0)&&f.setExtremes(e,g,!0,!1)
                })
            });
            d=c.container.innerHTML;
            g=null;
            c.destroy();
            v(a);
            d=d.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/isTracker="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g,
                " xlink:href=").replace(/\n/," ").replace(/<\/svg>.*?$/,"</svg>").replace(/&nbsp;/g," ").replace(/&shy;/g,"­").replace(/<IMG /g,"<image ").replace(/height=([^" ]+)/g,'height="$1"').replace(/width=([^" ]+)/g,'width="$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href="$1"/>').replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" ]+)/g,'class="$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){
                return a.toLowerCase()
            });
            d=d.replace(/(url\(#highcharts-[0-9]+)&quot;/g,
                "$1").replace(/&quot;/g,"'");
            d.match(/ xmlns="/g).length===2&&(d=d.replace(/xmlns="[^"]+"/,""));
            return d
        },
        exportChart:function(a,b){
            var c=this.options.exporting,d=this.getSVG(l(c.chartOptions,b)),a=l(c,a);
            e.post(a.url,{
                filename:a.filename||"chart",
                type:a.type,
                width:a.width,
                scale:a.scale||2,
                svg:d
            })
        },
        print:function(){
            var a=this,b=a.container,c=[],d=b.parentNode,f=i.body,g=f.childNodes;
            if(!a.isPrinting)a.isPrinting=!0,k(g,function(a,b){
                if(a.nodeType===1)c[b]=a.style.display,a.style.display="none"
            }),
            f.appendChild(b),D.print(),setTimeout(function(){
                d.appendChild(b);
                k(g,function(a,b){
                    if(a.nodeType===1)a.style.display=c[b]
                });
                a.isPrinting=!1
            },1E3)
        },
        contextMenu:function(a,b,c,d,f,g){
            var e=this,p=e.options.navigation,i=p.menuItemStyle,q=e.chartWidth,r=e.chartHeight,s="cache-"+a,h=e[s],m=C(f,g),x,n,l;
            if(!h)e[s]=h=j("div",{
                className:"highcharts-"+a
            },{
                position:"absolute",
                zIndex:1E3,
                padding:m+"px"
            },e.container),x=j("div",null,o({
                MozBoxShadow:"3px 3px 10px #888",
                WebkitBoxShadow:"3px 3px 10px #888",
                boxShadow:"3px 3px 10px #888"
            },
            p.menuStyle),h),n=function(){
                t(h,{
                    display:"none"
                })
            },u(h,"mouseleave",function(){
                l=setTimeout(n,500)
            }),u(h,"mouseenter",function(){
                clearTimeout(l)
            }),k(b,function(a){
                if(a){
                    var b=j("div",{
                        onmouseover:function(){
                            t(this,p.menuItemHoverStyle)
                        },
                        onmouseout:function(){
                            t(this,i)
                        },
                        innerHTML:a.text||e.options.lang[a.textKey]
                    },o({
                        cursor:"pointer"
                    },i),x);
                    b.onclick=function(){
                        n();
                        a.onclick.apply(e,arguments)
                    };
                    
                    e.exportDivElements.push(b)
                }
            }),e.exportDivElements.push(x,h),e.exportMenuWidth=h.offsetWidth,e.exportMenuHeight=
                h.offsetHeight;
            a={
                display:"block"
            };
    
            c+e.exportMenuWidth>q?a.right=q-c-f-m+"px":a.left=c-m+"px";
            d+g+e.exportMenuHeight>r?a.bottom=r-d-m+"px":a.top=d+g-m+"px";
            t(h,a)
        },
        addButton:function(a){
            function b(){
                r.attr(k);
                q.attr(m)
            }
            var c=this,d=c.renderer,f=l(c.options.navigation.buttonOptions,a),e=f.onclick,i=f.menuItems,p=f.width,j=f.height,q,r,s,h,a=f.borderWidth,m={
                stroke:f.borderColor
            },k={
                stroke:f.symbolStroke,
                fill:f.symbolFill
            },n=f.symbolSize||12;
            if(!c.btnCount)c.btnCount=0;
            h=c.btnCount++;
            if(!c.exportDivElements)c.exportDivElements=
                [],c.exportSVGElements=[];
            f.enabled!==!1&&(q=d.rect(0,0,p,j,f.borderRadius,a).align(f,!0).attr(o({
                fill:f.backgroundColor,
                "stroke-width":a,
                zIndex:19
            },m)).add(),s=d.rect(0,0,p,j,0).align(f).attr({
                id:f._id,
                fill:"rgba(255, 255, 255, 0.001)",
                title:c.options.lang[f._titleKey],
                zIndex:21
            }).css({
                cursor:"pointer"
            }).on("mouseover",function(){
                r.attr({
                    stroke:f.hoverSymbolStroke,
                    fill:f.hoverSymbolFill
                });
                q.attr({
                    stroke:f.hoverBorderColor
                })
            }).on("mouseout",b).on("click",b).add(),i&&(e=function(){
                b();
                var a=s.getBBox();
                c.contextMenu("menu"+h,i,a.x,a.y,p,j)
            }),s.on("click",function(){
                e.apply(c,arguments)
            }),r=d.symbol(f.symbol,f.symbolX-n/2,f.symbolY-n/2,n,n).align(f,!0).attr(o(k,{
                "stroke-width":f.symbolStrokeWidth||1,
                zIndex:20
            })).add(),c.exportSVGElements.push(q,s,r))
        },
        destroyExport:function(){
            var a,b;
            for(a=0;a<this.exportSVGElements.length;a++)b=this.exportSVGElements[a],b.onclick=b.ontouchstart=null,this.exportSVGElements[a]=b.destroy();
            for(a=0;a<this.exportDivElements.length;a++)b=this.exportDivElements[a],B(b,
                "mouseleave"),this.exportDivElements[a]=b.onmouseout=b.onmouseover=b.ontouchstart=b.onclick=null,v(b)
        }
    });
    A.exportIcon=function(a,b,c,d){
        return y(["M",a,b+c,"L",a+c,b+d,a+c,b+d*0.8,a,b+d*0.8,"Z","M",a+c*0.5,b+d*0.8,"L",a+c*0.8,b+d*0.4,a+c*0.4,b+d*0.4,a+c*0.4,b,a+c*0.6,b,a+c*0.6,b+d*0.4,a+c*0.2,b+d*0.4,"Z"])
    };
    
    A.printIcon=function(a,b,c,d){
        return y(["M",a,b+d*0.7,"L",a+c,b+d*0.7,a+c,b+d*0.4,a,b+d*0.4,"Z","M",a+c*0.2,b+d*0.4,"L",a+c*0.2,b,a+c*0.8,b,a+c*0.8,b+d*0.4,"Z","M",a+c*0.2,b+d*0.7,"L",a,b+d,a+
            c,b+d,a+c*0.8,b+d*0.7,"Z"])
    };
    
    z.prototype.callbacks.push(function(a){
        var b,c=a.options.exporting,d=c.buttons;
        if(c.enabled!==!1){
            for(b in d)a.addButton(d[b]);u(a,"destroy",a.destroyExport)
        }
    })
})(Highcharts);
